<!DOCTYPE html>
<html lang="zh">
<head>
    <meta charset="utf-8">
    <link rel="stylesheet" href="../css/style.css" type="text/css" media="screen">
</head>
<body>
    <div class="entry"> 
 <p>本组函数用于处理文件。</p> 
 <p>存放工作文件的三个目录(含子目录):</p> 
 <ul> 
  <li>/HISTORY/&lt;当前经纪商&gt; – 特别提供的FileOpenHistory函数: </li> 
  <li>/EXPERTS/FILES – 公用目录; </li> 
  <li>/TESTER/FILES – 测试专用。 </li> 
 </ul> 
 <p>禁止访问来自于其他目录的工作文件。</p> 
 <ul id="toc_l"> 
  <li><strong><a href="395.html#FileClose">FileClose()</a></strong> – 关闭文件 </li> 
  <li><strong><a href="395.html#FileDelete">FileDelete()</a></strong> – 删除文件 </li> 
  <li><strong><a href="395.html#FileFlush">FileFlush()</a></strong> – 清除文件缓冲区并存盘 </li> 
  <li><strong><a href="395.html#FileIsEnding">FileIsEnding()</a></strong> – 判断文件指针是否到文件尾 </li> 
  <li><strong><a href="395.html#FileIsLineEnding">FileIsLineEnding()</a></strong> – 判断文件指针是否指向行尾 </li> 
  <li><strong><a href="395.html#FileOpen">FileOpen()</a></strong> – 打开文件 </li> 
  <li><strong><a href="#FileOpenHistory">FileOpenHistory()</a></strong> – 打开历史目录下文件 </li> 
  <li><strong><a href="#FileReadArray">FileReadArray()</a></strong> – 文件读取到数组 </li> 
  <li><strong><a href="#FileReadDouble">FileReadDouble()</a></strong> – 从文件读取浮点型数据 </li> 
  <li><strong><a href="#FileReadInteger">FileReadInteger()</a></strong> – 从文件读取整型数据 </li> 
  <li><strong><a href="#FileReadNumber">FileReadNumber()</a></strong> – 从文本文件读取数值 </li> 
  <li><strong><a href="#FileReadString">FileReadString()</a></strong> – 从文件读取字符串 </li> 
  <li><strong><a href="#FileSeek">FileSeek()</a></strong> – 移动文件指针 </li> 
  <li><strong><a href="397.html#FileSize">FileSize()</a></strong> – 获取文件大小 </li> 
  <li><strong><a href="397.html#FileTell">FileTell()</a></strong> – 获取文件指针位置 </li> 
  <li><strong><a href="397.html#FileWrite">FileWrite()</a></strong> – 写入CSV文件 </li> 
  <li><strong><a href="397.html#FileWriteArray">FileWriteArray()</a></strong> – 数组内容写入文件 </li> 
  <li><strong><a href="397.html#FileWriteDouble">FileWriteDouble()</a></strong> – 双精度数值写入文件 </li> 
  <li><strong><a href="397.html#FileWriteInteger">FileWriteInteger()</a></strong> – 整型数值写入文件 </li> 
  <li><strong><a href="397.html#FileWriteString">FileWriteString()</a></strong> – 字符串写入文件 </li> 
 </ul> 
 <p>&nbsp;</p> 
 <h2><a name="FileOpenHistory"></a>FileOpenHistory() – 打开历史目录下文件</h2> 
 <pre class="brush: mql4; toolbar: false;">int FileOpenHistory(string filename, int mode, void delimiter)</pre> 
 <p>在当前历史目录(<em>terminal_directory\history\server_name</em>)或子目录内打开文件。如果打开成功，返回文件句柄，如果函数失败，返回-1。如果想获取详细的错误信息，请调用GetLastError() 函数。</p> 
 <p>注：客户端有可能连接到不同经纪公司的服务器。每个经纪公司的历史数据(HST文件)会存储在terminal_ directory\history相对应的子目录内。</p> 
 <p>文件在离线时同样可以打开，不必输入新数据就能把它制成图表。</p> 
 <p>参数:</p> 
 <pre>filename - 文件名称
mode - 打开模式。可以是以下的一种或是多种组合: FILE_BIN, FILE_CSV, FILE_READ, FILE_WRITE。
delimiter - csv 文件的限定符。默认为 ';' 符号。 </pre> 
 <p>示例:</p> 
 <pre class="brush: mql4; toolbar: false;">  int handle=FileOpenHistory("USDX240.HST",FILE_BIN|FILE_WRITE);
  if(handle&lt;1)
    {
     Print("不能创建 USDX240.HST文件");
     return(false);
    }
  // 运行文件
  // ...
  FileClose(handle);</pre> 
 <div class="divider top-of-page">
  <a title="Top of Page" href="#top">Back to Top</a>
 </div> 
 <h2><a name="FileReadArray"></a>FileReadArray() – 文件读取到数组</h2> 
 <pre class="brush: mql4; toolbar: false;">int FileReadArray(int handle, void array[], int start, int count)</pre> 
 <p>从二进制文件读取指定数量的内容到数组中。读取之前，确认数组要足够大。函数返回实际读取内容的数量。如果想获取详细的错误信息，请调用GetLastError() 函数。</p> 
 <p>参数:</p> 
 <pre>handle - 用 FileOpen()函数返回的句柄。
array[] - 写入的数组。
start - 在数组中存储的开始位置。
count - 读取内容个数。 </pre> 
 <p>示例:</p> 
 <pre class="brush: mql4; toolbar: false;">  int handle;
  double varray[10];
  handle=FileOpen("filename.dat", FILE_BIN|FILE_READ);
  if(handle&gt;0)
    {
     FileReadArray(handle, varray, 0, 10);
     FileClose(handle);
    }</pre> 
 <div class="divider top-of-page">
  <a title="Top of Page" href="#top">Back to Top</a>
 </div> 
 <h2><a name="FileReadDouble"></a>FileReadDouble() – 从文件读取浮点型数据</h2> 
 <pre class="brush: mql4; toolbar: false;">double FileReadDouble(int handle, void size)</pre> 
 <p>从二进制文件当前位置读取浮点型双精度数据。数值格式长度可以是8byte的double型或者是4byte的float型。</p> 
 <p>如果想获取详细的错误信息，请调用GetLastError() 函数。</p> 
 <p>参数:</p> 
 <pre>handle - 用 FileOpen()函数返回的句柄。
size - 数值格式大小，DOUBLE_VALUE(8 bytes) 或者 FLOAT_VALUE(4 bytes)。 </pre> 
 <p>示例:</p> 
 <pre class="brush: mql4; toolbar: false;">  int handle;
  double value;
  handle=FileOpen("mydata.dat",FILE_BIN);
  if(handle&gt;0)
    {
     value=FileReadDouble(handle,DOUBLE_VALUE);
     FileClose(handle);
    }</pre> 
 <div class="divider top-of-page">
  <a title="Top of Page" href="#top">Back to Top</a>
 </div> 
 <h2><a name="FileReadInteger"></a>FileReadInteger() – 从文件读取整型数据</h2> 
 <pre class="brush: mql4; toolbar: false;">int FileReadInteger(int handle, void size)</pre> 
 <p>从二进制文件当前位置读取整型数据。数值格式长度可以是1,2,4字节，如果格式大小不指定，系统设法读4字节的值。</p> 
 <p>如果想获取详细的错误信息，请调用GetLastError() 函数。</p> 
 <p>参数:</p> 
 <pre>handle - 用 FileOpen()函数返回的句柄。
size - 数值格式大小，CHAR_VALUE(1 byte), SHORT_VALUE(2 bytes) 或者 LONG_VALUE(4 bytes)。 </pre> 
 <p>示例:</p> 
 <pre class="brush: mql4; toolbar: false;">  int handle;
  int value;
  handle=FileOpen("mydata.dat", FILE_BIN|FILE_READ);
  if(handle&gt;0)
    {
     value=FileReadInteger(h1,2);
     FileClose(handle);
    }</pre> 
 <div class="divider top-of-page">
  <a title="Top of Page" href="#top">Back to Top</a>
 </div> 
 <h2><a name="FileReadNumber"></a>FileReadNumber() – 从文本文件读取数值</h2> 
 <pre class="brush: mql4; toolbar: false;">double FileReadNumber(int handle)</pre> 
 <p>在文件当前位置读取分隔符之前的数值。只能为CSV文件。</p> 
 <p>如果想获取详细的错误信息，请调用GetLastError() 函数。</p> 
 <p>参数:</p> 
 <pre>handle - 用 FileOpen()函数返回的句柄。</pre> 
 <p>示例:</p> 
 <pre class="brush: mql4; toolbar: false;">  int handle;
  int value;
  handle=FileOpen("filename.csv", FILE_CSV, ';');
  if(handle&gt;0)
    {
     value=FileReadNumber(handle);
     FileClose(handle);
    }</pre> 
 <div class="divider top-of-page">
  <a title="Top of Page" href="#top">Back to Top</a>
 </div> 
 <h2><a name="FileReadString"></a>FileReadString() – 从文件读取字符串</h2> 
 <pre class="brush: mql4; toolbar: false;">string FileReadString(int handle, void length)</pre> 
 <p>本函数从文件当前位置读取字符串，适用于CSV和二进制文件。对于文本文件，读取在分隔符之前字符串。对于二进制文件，将读取指定个数的字符串。</p> 
 <p>如果想获取详细的错误信息，请调用GetLastError() 函数。</p> 
 <p>参数:</p> 
 <pre>handle - 用 FileOpen()函数返回的句柄。
length - 要读取的字符串长度</pre> 
 <p>示例:</p> 
 <pre class="brush: mql4; toolbar: false;">  int handle;
  string str;
  handle=FileOpen("filename.csv", FILE_CSV|FILE_READ);
  if(handle&gt;0)
    {
     str=FileReadString(handle,100);
     FileClose(handle);
    }</pre> 
 <div class="divider top-of-page">
  <a title="Top of Page" href="#top">Back to Top</a>
 </div> 
 <h2><a name="FileSeek"></a>FileSeek() – 移动文件指针</h2> 
 <pre class="brush: mql4; toolbar: false;">bool FileSeek(int handle, int offset, int origin)</pre> 
 <p>本函数可以从文件头、文件尾或当前位置按字节移动文件指针到一个偏移的新位置。接下来读写操作就在一个新位置开始。</p> 
 <p>如果文件指针移动成功了，本函数返回TRUE，否则，返回FALSE。</p> 
 <p>如果想获取详细的错误信息，请调用GetLastError() 函数。</p> 
 <p>参数:</p> 
 <pre>handle - 用 FileOpen()函数返回的句柄。
offset - 按字节数相对原点的偏移量。
origin - 初始位置。其值可以是以下任意常数:
         SEEK_CUR - 当前位置,
         SEEK_SET - 文件头
         SEEK_END - 文件尾 </pre> 
 <p>示例:</p> 
 <pre class="brush: mql4; toolbar: false;">  int handle=FileOpen("filename.csv", FILE_CSV|FILE_READ|FILE_WRITE, ';');
  if(handle&gt;0)
    {
     FileSeek(handle, 0, SEEK_END);
     //----在文件末端添加数据
     FileWrite(handle, data1, data2);
     FileClose(handle);
     handle=0;
    }</pre> 
 <div class="divider top-of-page">
  <a title="Top of Page" href="#top">Back to Top</a>
 </div> 本文地址：
 <a href="396.html" rel="bookmark"><b>396.html</b></a> 
</div>
</body>
</html>